In general, robot actions that are executed in a robot follow a certain order, and a description on the order of action execution is called an action execution procedure. That is, an action execution procedure of a robot is basically constituted by a condition decision step for processing information on an external condition, an action decision step for deciding an action to be carried out by the robot based on the external condition, and an action execution step for carrying out the decided action. These steps are implemented in software and used in a robot control algorithm.
As conventional techniques related to the above action execution procedure, there are two ways: one is associated with the kind of languages to describe the action decision process and the other is associated with a model used as a basis of the action decision process.
The former way is to implement the action decision process directly in a compiler source code such as C language or C++ language. The action decision process implemented in the source code is combined with the condition decision process and the action execution process, followed by being compiled to create an execution program. The execution program so created is then loaded in a robot and used to control the robot. The major advantage of this way is that action decision process is executed quickly because the action decision process is mapped to an execution code.
Meanwhile, the latter way makes use of a sequential/planar model to sequentially describe a series of actions in temporal order.
However, the former way has a difficulty in revising the action decision process, a difficulty in immediate revision and debugging, and a difficulty in learning.
The latter way has a shortcoming in poor modulation of the action selection process, poor reusability, and increasing complexity and a difficulty in modulation of an excessively enlarged planar model as the action selection process gets more complex.
In addition, these conventional approaches are convenient to describe a decision that is made for sequential actions, but are not suitable for describing actions that are executed in parallel.